package com.example.understand_compose1.fet_xuiusage

import android.os.Bundle
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.example.understand_compose1.R
import com.example.understand_compose1.databinding.ActivityBottomNavBinding

// BUG: 运行闪退,难道需要无参构造HomeFragment?
class BottomNavAct : AppCompatActivity() {

    private lateinit var binding: ActivityBottomNavBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityBottomNavBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val navView: BottomNavigationView = binding.navView

        val navController = findNavController(R.id.nav_host_fragment_activity_bottom_nav)
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.

        // TODO: 因为配置里的主题没有appbar，以下代码注释掉
        val appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
            )
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)
    }
}

/*
从你提供的日志信息来看，你的Android应用在启动时遇到了一个异常，导致应用崩溃。这个异常是由于无法正确地实例化一个Fragment导致的。具体的错误信息如下：

1. `android.view.InflateException: Binary XML file line #31 in com.example.understand_compose1:layout/activity_bottom_nav: Error inflating class fragment`

   这个错误表明在XML布局文件`activity_bottom_nav`的第31行，系统尝试实例化一个`fragment`时出现了问题。

2. `androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.understand_compose1.fet_xuiusage.ui.home.HomeFragment: calling Fragment constructor caused an exception`

   这个错误表明无法实例化`HomeFragment`，具体原因是在调用Fragment的构造函数时抛出了异常。

3. `java.lang.IllegalStateException: onGetLayoutInflater() cannot be executed until the Fragment is attached to the FragmentManager.`

   这个错误表明`onGetLayoutInflater()`方法被调用了，但是Fragment还没有被附加到FragmentManager。

根据这些错误信息，这里有几个可能的解决方案：

- 确保你的`HomeFragment`类有一个无参的构造函数。如果`HomeFragment`的构造函数需要参数，你需要确保在XML布局文件中正确地提供了这些参数。

- 检查`HomeFragment`中的`onGetLayoutInflater()`方法的使用。确保这个方法只在Fragment被附加到FragmentManager之后调用。

- 检查XML布局文件`activity_bottom_nav`的第31行，确保`<fragment>`标签的使用是正确的，并且指向的Fragment类是存在的。

- 如果你使用了`ViewDataBinding`，请确保你没有在Fragment的构造函数中调用`getLayoutInflater()`，因为这可能会导致上述的`IllegalStateException`。

- 确保你的Fragment类名没有拼写错误，并且正确地导入了。

修复这些问题后，你的应用应该能够正常启动。如果问题仍然存在，你可能需要进一步检查你的代码和配置，或者提供更多的代码上下文以便进行更详细的分析。

 */